package com.hqyj.springBoot.listener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 *删除非当前日志的监听器
 */
@WebListener
public class LogFileDestroyListener implements ServletContextListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(LogFileDestroyListener.class);

    @Override//初始化监听器
    public void contextInitialized(ServletContextEvent sce) {
        LOGGER.debug("==== 注册监听器 ====");

        File logFile = new File("/log");
        //判断是否有这个日志文件夹没有直接返回
        if(!logFile.exists()){
            return;
        }
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String thisDate = dtf.format(LocalDateTime.now());//从默认时区中的系统时钟获取当前日期时间。、

        File[] files = logFile.listFiles();
        for (File file : files) {
            //遍历并判断日志是否包含有当天的信息，如果没有就删除
            if(!file.getName().contains(thisDate)){
             file.delete();
            }
        }
    }

    @Override//销毁监听器
    public void contextDestroyed(ServletContextEvent sce) {
        LOGGER.debug("==== 销毁监听器 ====");
    }
}
